\hypertarget{classtoolTransformation}{
\section{Dokumentace třídy toolTransformation}
\label{classtoolTransformation}\index{toolTransformation@{toolTransformation}}
}
Transformace nástroje.  


{\tt \#include $<$transformation.h$>$}

\subsection*{Třídy}
\begin{CompactItemize}
\item 
class \hyperlink{classtoolTransformation_1_1algorithmError}{algorithmError}
\begin{CompactList}\small\item\em Vyjímka vyhozená při transformaci. \item\end{CompactList}\end{CompactItemize}
\subsection*{Veřejné metody}
\begin{CompactItemize}
\item 
\hyperlink{classtoolTransformation_87ab2533fdbff67731d4d573ba945241}{toolTransformation} ()
\begin{CompactList}\small\item\em Konstruktor transformace nástroje. \item\end{CompactList}\item 
void \hyperlink{classtoolTransformation_3b080456010bab0e9b9fb4da6c5bd01e}{setParam} (float, float)
\begin{CompactList}\small\item\em Nastaví parametr nástroje a výšku. \item\end{CompactList}\item 
void \hyperlink{classtoolTransformation_bb638b68e7ad62c99dc21d7e84d66bb4}{setMoves} (bool)
\begin{CompactList}\small\item\em Aplikovat výšku na rychlo posuvy. \item\end{CompactList}\item 
\hypertarget{classtoolTransformation_bfed160611972d2dd26cb13f27103a1b}{
bool \hyperlink{classtoolTransformation_bfed160611972d2dd26cb13f27103a1b}{getMoves} () const }
\label{classtoolTransformation_bfed160611972d2dd26cb13f27103a1b}

\begin{CompactList}\small\item\em Nastavení aplikace na rychloposuv. \item\end{CompactList}\item 
void \hyperlink{classtoolTransformation_443c7a2566d84adde776fc1d2edbb8cd}{setCommonPoint} (bool)
\begin{CompactList}\small\item\em Společný koncový bod. \item\end{CompactList}\item 
\hypertarget{classtoolTransformation_145addbc4b49c005009202ae7480fc27}{
bool \hyperlink{classtoolTransformation_145addbc4b49c005009202ae7480fc27}{getCommonPoint} () const }
\label{classtoolTransformation_145addbc4b49c005009202ae7480fc27}

\begin{CompactList}\small\item\em Vrací status společného bodu. \item\end{CompactList}\item 
\hypertarget{classtoolTransformation_c9070bd2234b84638a4e1d79c94e1f32}{
float \hyperlink{classtoolTransformation_c9070bd2234b84638a4e1d79c94e1f32}{getToolRadius} () const }
\label{classtoolTransformation_c9070bd2234b84638a4e1d79c94e1f32}

\begin{CompactList}\small\item\em Vrací přírůstek nástroje. \item\end{CompactList}\item 
\hypertarget{classtoolTransformation_216a8d76ee2590fd162916de1be0474e}{
float \hyperlink{classtoolTransformation_216a8d76ee2590fd162916de1be0474e}{getDepth} () const }
\label{classtoolTransformation_216a8d76ee2590fd162916de1be0474e}

\begin{CompactList}\small\item\em Vrací přírůstek výšky. \item\end{CompactList}\item 
\hyperlink{classgObject}{gObject} \& \hyperlink{classtoolTransformation_d6c270f8c172a3fa7b32ab75baccb1d0}{apply} (\hyperlink{classgObject}{gObject} \&)  throw (algorithmError)
\begin{CompactList}\small\item\em Aplikuje transformace na objekt. \item\end{CompactList}\item 
\hyperlink{classgObject}{gObject} \& \hyperlink{classtoolTransformation_4c35fde5ad8c1931090b7b92e5429b94}{apply} (\hyperlink{classgObjectContainer}{gObjectContainer} \&)  throw (algorithmError)
\begin{CompactList}\small\item\em Aplikuje transformace na kontejner. \item\end{CompactList}\end{CompactItemize}
\subsection*{Statické veřejné metody}
\begin{CompactItemize}
\item 
static float \hyperlink{classtoolTransformation_fb85c3d61b1d975f6e029a7c992f5d4f}{lineIntersect} (float $\ast$, float $\ast$, float $\ast$, float $\ast$)
\begin{CompactList}\small\item\em Průnik přímky a přímky. \item\end{CompactList}\item 
static bool \hyperlink{classtoolTransformation_d03b62dd8fbef0e6ae07c29eb370d841}{isLinearlyIndependent} (float $\ast$, float $\ast$)
\begin{CompactList}\small\item\em Linearní závislost dvou vektorů. \item\end{CompactList}\item 
static int \hyperlink{classtoolTransformation_845db84d740e747a6f4bf5a8b6f98b1a}{quadraticEquation} (float, float, float, float $\ast$)
\begin{CompactList}\small\item\em Řešení kvadratické rovnice. \item\end{CompactList}\item 
static int \hyperlink{classtoolTransformation_de4d1ea0ef382ae83e4caaaf0b1d19b5}{lineArcIntersect} (float $\ast$, float $\ast$, float $\ast$, float, float $\ast$)
\begin{CompactList}\small\item\em Průnik přímky a kružnice. \item\end{CompactList}\item 
static int \hyperlink{classtoolTransformation_e7f49a52a1b825763a0d025f8b9e1469}{arcIntersect} (float $\ast$, float, float $\ast$, float, float $\ast$, float $\ast$)
\begin{CompactList}\small\item\em Průnik kružnice a kružnice. \item\end{CompactList}\item 
static float \hyperlink{classtoolTransformation_c907043f371675a643eeb08cf8fab487}{arcAngle} (float $\ast$, float $\ast$)
\begin{CompactList}\small\item\em Úhel vektorů. \item\end{CompactList}\item 
static void \hyperlink{classtoolTransformation_ebd0b9a8e57334a721adb281ca4e610d}{getUnitVector} (float $\ast$, float $\ast$, float $\ast$)
\begin{CompactList}\small\item\em Norma vektoru. \item\end{CompactList}\end{CompactItemize}


\subsection{Detailní popis}
Transformace nástroje. 

Provadí transformace nástroje, jako je změna jeho poloměru, nebo jeho výšky. Je třeba zdůraznit, že není známa přesná velikost nástroje , proto všechny operace provádíme na základě přírůstku. Přírustek může být i záporný. Tranformace má za úkol dodržet předem daná pravidla. Počet bodů před transformací a po tranformaci musí zůstat stejný, z tohoto důvodu může nastat vyjímka \hyperlink{classtoolTransformation_1_1algorithmError}{algorithmError}, která ukazuje na nepoužítelnost transformace pro dané parametry. Tranformace se nejlépe hodí pro malé změny poloměru nástroje. 

\subsection{Dokumentace konstruktoru a destruktoru}
\hypertarget{classtoolTransformation_87ab2533fdbff67731d4d573ba945241}{
\index{toolTransformation@{toolTransformation}!toolTransformation@{toolTransformation}}
\index{toolTransformation@{toolTransformation}!toolTransformation@{toolTransformation}}
\subsubsection[{toolTransformation}]{\setlength{\rightskip}{0pt plus 5cm}toolTransformation::toolTransformation ()}}
\label{classtoolTransformation_87ab2533fdbff67731d4d573ba945241}


Konstruktor transformace nástroje. 

Nastaví přírusky na 0 a flag na false. 

\subsection{Dokumentace k metodám}
\hypertarget{classtoolTransformation_4c35fde5ad8c1931090b7b92e5429b94}{
\index{toolTransformation@{toolTransformation}!apply@{apply}}
\index{apply@{apply}!toolTransformation@{toolTransformation}}
\subsubsection[{apply}]{\setlength{\rightskip}{0pt plus 5cm}{\bf gObject} \& toolTransformation::apply ({\bf gObjectContainer} \& {\em container})  throw ({\bf algorithmError})}}
\label{classtoolTransformation_4c35fde5ad8c1931090b7b92e5429b94}


Aplikuje transformace na kontejner. 

Při aplikaci transformací může dojít k vyjímce a objekt může zustat poškozený, z tohoto důvodu je bezpečné používat kopii původního kontejneru. \begin{Desc}
\item[Parametry:]
\begin{description}
\item[{\em container}]Kontejner. \end{description}
\end{Desc}
\hypertarget{classtoolTransformation_d6c270f8c172a3fa7b32ab75baccb1d0}{
\index{toolTransformation@{toolTransformation}!apply@{apply}}
\index{apply@{apply}!toolTransformation@{toolTransformation}}
\subsubsection[{apply}]{\setlength{\rightskip}{0pt plus 5cm}{\bf gObject} \& toolTransformation::apply ({\bf gObject} \& {\em object})  throw ({\bf algorithmError})}}
\label{classtoolTransformation_d6c270f8c172a3fa7b32ab75baccb1d0}


Aplikuje transformace na objekt. 

Při aplikaci transformací může dojít k vyjímce a objekt může zustat poškozený, z tohoto důvodu je bezpečné používat kopii původního objektu. \begin{Desc}
\item[Parametry:]
\begin{description}
\item[{\em object}]Objekt. \end{description}
\end{Desc}
\hypertarget{classtoolTransformation_c907043f371675a643eeb08cf8fab487}{
\index{toolTransformation@{toolTransformation}!arcAngle@{arcAngle}}
\index{arcAngle@{arcAngle}!toolTransformation@{toolTransformation}}
\subsubsection[{arcAngle}]{\setlength{\rightskip}{0pt plus 5cm}float toolTransformation::arcAngle (float $\ast$ {\em S}, \/  float $\ast$ {\em P})\hspace{0.3cm}{\tt  \mbox{[}static\mbox{]}}}}
\label{classtoolTransformation_c907043f371675a643eeb08cf8fab487}


Úhel vektorů. 

Změří úhel v kružnici. Úhel je měřen v radianech v intervalu $<$0, 2PI$>$. \begin{Desc}
\item[Parametry:]
\begin{description}
\item[{\em S}]Střed kružnice S\mbox{[}2\mbox{]}. \item[{\em P}]Bod na kruřnici P\mbox{[}2\mbox{]}. \end{description}
\end{Desc}
\begin{Desc}
\item[Návratová hodnota:]Vrací úhel. \end{Desc}
\hypertarget{classtoolTransformation_e7f49a52a1b825763a0d025f8b9e1469}{
\index{toolTransformation@{toolTransformation}!arcIntersect@{arcIntersect}}
\index{arcIntersect@{arcIntersect}!toolTransformation@{toolTransformation}}
\subsubsection[{arcIntersect}]{\setlength{\rightskip}{0pt plus 5cm}int toolTransformation::arcIntersect (float $\ast$ {\em S0}, \/  float {\em r0}, \/  float $\ast$ {\em S1}, \/  float {\em r1}, \/  float $\ast$ {\em P0}, \/  float $\ast$ {\em P1})\hspace{0.3cm}{\tt  \mbox{[}static\mbox{]}}}}
\label{classtoolTransformation_e7f49a52a1b825763a0d025f8b9e1469}


Průnik kružnice a kružnice. 

Máme kružnici 1. -$>$ (x - S0\mbox{[}0\mbox{]})$\ast$$\ast$2 + (y - S0\mbox{[}1\mbox{]})$\ast$$\ast$2 = r0$\ast$$\ast$2 a ružnici 2. -$>$ (x - S1\mbox{[}0\mbox{]})$\ast$$\ast$2 + (y - S1\mbox{[}1\mbox{]})$\ast$$\ast$2 = r1$\ast$$\ast$2. Hledáne jejich společné body (x, y). Vrací počet řešení a neošetřuje možnost nekonečno mnoho řešení. \begin{Desc}
\item[Parametry:]
\begin{description}
\item[{\em S0}]Střed první kružnice S0\mbox{[}2\mbox{]}. \item[{\em r0}]Poloměr první kružnice r0\mbox{[}2\mbox{]}. \item[{\em S1}]Střed druhé kružnice S1\mbox{[}2\mbox{]}. \item[{\em r1}]Poloměr druhé kružnice r0\mbox{[}2\mbox{]} \item[{\em P0}]První společný bod P0\mbox{[}2\mbox{]}. \item[{\em P1}]Druhý společný bod P1\mbox{[}2\mbox{]}. \end{description}
\end{Desc}
\begin{Desc}
\item[Návratová hodnota:]Vrací počet řešení, v případě jen jednoho řešení, je uloženo v bodu P0. \end{Desc}
\hypertarget{classtoolTransformation_ebd0b9a8e57334a721adb281ca4e610d}{
\index{toolTransformation@{toolTransformation}!getUnitVector@{getUnitVector}}
\index{getUnitVector@{getUnitVector}!toolTransformation@{toolTransformation}}
\subsubsection[{getUnitVector}]{\setlength{\rightskip}{0pt plus 5cm}void toolTransformation::getUnitVector (float $\ast$ {\em M}, \/  float $\ast$ {\em N}, \/  float $\ast$ {\em v})\hspace{0.3cm}{\tt  \mbox{[}static\mbox{]}}}}
\label{classtoolTransformation_ebd0b9a8e57334a721adb281ca4e610d}


Norma vektoru. 

Z daných bodů se určí normovaný vektor(vektor o velikosti $|$v$|$ = 1). \begin{Desc}
\item[Parametry:]
\begin{description}
\item[{\em M}]První bod M\mbox{[}2\mbox{]}. \item[{\em N}]Druhý bod N\mbox{[}2\mbox{]}. \item[{\em v}]Normovaný vektor v\mbox{[}2\mbox{]}. \end{description}
\end{Desc}
\hypertarget{classtoolTransformation_d03b62dd8fbef0e6ae07c29eb370d841}{
\index{toolTransformation@{toolTransformation}!isLinearlyIndependent@{isLinearlyIndependent}}
\index{isLinearlyIndependent@{isLinearlyIndependent}!toolTransformation@{toolTransformation}}
\subsubsection[{isLinearlyIndependent}]{\setlength{\rightskip}{0pt plus 5cm}bool toolTransformation::isLinearlyIndependent (float $\ast$ {\em p}, \/  float $\ast$ {\em m})\hspace{0.3cm}{\tt  \mbox{[}static\mbox{]}}}}
\label{classtoolTransformation_d03b62dd8fbef0e6ae07c29eb370d841}


Linearní závislost dvou vektorů. 

Vrací true, pokud jsou vektory linearně nezávislé. Je dobré ho použít s metodou lineIntersect. \begin{Desc}
\item[Parametry:]
\begin{description}
\item[{\em p}]Vektor p\mbox{[}2\mbox{]}. \item[{\em m}]Vektor m\mbox{[}2\mbox{]}. \end{description}
\end{Desc}
\hypertarget{classtoolTransformation_de4d1ea0ef382ae83e4caaaf0b1d19b5}{
\index{toolTransformation@{toolTransformation}!lineArcIntersect@{lineArcIntersect}}
\index{lineArcIntersect@{lineArcIntersect}!toolTransformation@{toolTransformation}}
\subsubsection[{lineArcIntersect}]{\setlength{\rightskip}{0pt plus 5cm}int toolTransformation::lineArcIntersect (float $\ast$ {\em P}, \/  float $\ast$ {\em p}, \/  float $\ast$ {\em S}, \/  float {\em r}, \/  float $\ast$ {\em t})\hspace{0.3cm}{\tt  \mbox{[}static\mbox{]}}}}
\label{classtoolTransformation_de4d1ea0ef382ae83e4caaaf0b1d19b5}


Průnik přímky a kružnice. 

Máme kružnici -$>$ (x - S\mbox{[}0\mbox{]})$\ast$$\ast$2 + (y - S\mbox{[}1\mbox{]})$\ast$$\ast$2 = r$\ast$$\ast$2 a přímku -$>$ (x, y) = P + p $\ast$ t. Hledáne jejich společné body (x, y). \begin{Desc}
\item[Parametry:]
\begin{description}
\item[{\em P}]Bod přímky P\mbox{[}2\mbox{]}. \item[{\em p}]Směrový vektor přímky p\mbox{[}2\mbox{]}. \item[{\em S}]Bod středu kružnice S\mbox{[}2\mbox{]}. \item[{\em r}]Poloměr kružnice. \item[{\em t}]Do pole velikosti dva jsou umístěna řešení, v případě jednoho řešení (přímka je tečna) se hodnota nachází v poli s indexem 0. \end{description}
\end{Desc}
\begin{Desc}
\item[Návratová hodnota:]Vrací počet řešení. \end{Desc}
\hypertarget{classtoolTransformation_fb85c3d61b1d975f6e029a7c992f5d4f}{
\index{toolTransformation@{toolTransformation}!lineIntersect@{lineIntersect}}
\index{lineIntersect@{lineIntersect}!toolTransformation@{toolTransformation}}
\subsubsection[{lineIntersect}]{\setlength{\rightskip}{0pt plus 5cm}float toolTransformation::lineIntersect (float $\ast$ {\em P}, \/  float $\ast$ {\em N}, \/  float $\ast$ {\em p}, \/  float $\ast$ {\em n})\hspace{0.3cm}{\tt  \mbox{[}static\mbox{]}}}}
\label{classtoolTransformation_fb85c3d61b1d975f6e029a7c992f5d4f}


Průnik přímky a přímky. 

Máme dvě přímky dané parametricky: přímka 1. -$>$ P + p $\ast$ t přímka 2. -$>$ N + n $\ast$ t0. Pokud přímky nejsou linearně závislé, najde t, pro který mají společný bod. \begin{Desc}
\item[Parametry:]
\begin{description}
\item[{\em P}]Bod první přínky P\mbox{[}2\mbox{]}. \item[{\em N}]Bod druhé přímky N\mbox{[}2\mbox{]}. \item[{\em p}]Směrový vektor první přímky p\mbox{[}2\mbox{]}. \item[{\em n}]Směrový vektor druhé přímky n\mbox{[}2\mbox{]}. \end{description}
\end{Desc}
\begin{Desc}
\item[Návratová hodnota:]Vrací velikost t, pro které mají přímky společný bod. \end{Desc}
\hypertarget{classtoolTransformation_845db84d740e747a6f4bf5a8b6f98b1a}{
\index{toolTransformation@{toolTransformation}!quadraticEquation@{quadraticEquation}}
\index{quadraticEquation@{quadraticEquation}!toolTransformation@{toolTransformation}}
\subsubsection[{quadraticEquation}]{\setlength{\rightskip}{0pt plus 5cm}int toolTransformation::quadraticEquation (float {\em a}, \/  float {\em b}, \/  float {\em c}, \/  float $\ast$ {\em x})\hspace{0.3cm}{\tt  \mbox{[}static\mbox{]}}}}
\label{classtoolTransformation_845db84d740e747a6f4bf5a8b6f98b1a}


Řešení kvadratické rovnice. 

Používá se při výpočtu průsečíku kružnice s přímkou. Řeší kavadratickou rovnici ve tvaru a$\ast$x$\ast$$\ast$2 + b$\ast$x + c = 0. Vrací počet řešení, které může nabývat hodnot 0, 1, 2. \begin{Desc}
\item[Parametry:]
\begin{description}
\item[{\em a}]\item[{\em b}]\item[{\em c}]\item[{\em x}]Do pole velikosti dva x\mbox{[}2\mbox{]} jsou umístěna řešení, v případě jednoho řešení se hodnota nachází v poli s indexem 0. \end{description}
\end{Desc}
\begin{Desc}
\item[Návratová hodnota:]Vrací počet řešení. \end{Desc}
\hypertarget{classtoolTransformation_443c7a2566d84adde776fc1d2edbb8cd}{
\index{toolTransformation@{toolTransformation}!setCommonPoint@{setCommonPoint}}
\index{setCommonPoint@{setCommonPoint}!toolTransformation@{toolTransformation}}
\subsubsection[{setCommonPoint}]{\setlength{\rightskip}{0pt plus 5cm}void toolTransformation::setCommonPoint (bool {\em boolean})}}
\label{classtoolTransformation_443c7a2566d84adde776fc1d2edbb8cd}


Společný koncový bod. 

Pokud první a poslední bod se nachází na stejných souřadnicích (x, y) je mezi nimi spočítán průsečík, za předpokladu že je nastaveno true. \hypertarget{classtoolTransformation_bb638b68e7ad62c99dc21d7e84d66bb4}{
\index{toolTransformation@{toolTransformation}!setMoves@{setMoves}}
\index{setMoves@{setMoves}!toolTransformation@{toolTransformation}}
\subsubsection[{setMoves}]{\setlength{\rightskip}{0pt plus 5cm}void toolTransformation::setMoves (bool {\em boolean})}}
\label{classtoolTransformation_bb638b68e7ad62c99dc21d7e84d66bb4}


Aplikovat výšku na rychlo posuvy. 

Pokud je nastaveno true, přírůstek výšky je aplikován i na rychloposuvy G0. \hypertarget{classtoolTransformation_3b080456010bab0e9b9fb4da6c5bd01e}{
\index{toolTransformation@{toolTransformation}!setParam@{setParam}}
\index{setParam@{setParam}!toolTransformation@{toolTransformation}}
\subsubsection[{setParam}]{\setlength{\rightskip}{0pt plus 5cm}void toolTransformation::setParam (float {\em r}, \/  float {\em z})}}
\label{classtoolTransformation_3b080456010bab0e9b9fb4da6c5bd01e}


Nastaví parametr nástroje a výšku. 

Parametr nástroje se vždy uvádí jako rozdíl mezi původní velikostí nástoje a novou velikostí, tedy původní velikost - nová velikost. Výška se taktéž uvádí jako rozdíl mezi původní výškou a novou výškou. \begin{Desc}
\item[Parametry:]
\begin{description}
\item[{\em r}]Přírustek nástroje. \item[{\em z}]Přířůstek k výšce. \end{description}
\end{Desc}


Dokumentace pro tuto třídu byla generována z následujících souborů:\begin{CompactItemize}
\item 
src/transformation.h\item 
src/transformation.cpp\end{CompactItemize}
